home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ARASAN_S.ZIP / SQUARE.CPP < prev    next >
C/C++ Source or Header  |  1994-02-19  |  2KB  |  109 lines

  1. // Copyright 1994 by Jon Dart.  All Rights Reserved.
  2.  
  3. #include "square.h"
  4.  
  5. int Square::Files[64] =
  6. {
  7.    1, 2, 3, 4, 5, 6, 7, 8,
  8.    1, 2, 3, 4, 5, 6, 7, 8,
  9.    1, 2, 3, 4, 5, 6, 7, 8,
  10.    1, 2, 3, 4, 5, 6, 7, 8,
  11.    1, 2, 3, 4, 5, 6, 7, 8,
  12.    1, 2, 3, 4, 5, 6, 7, 8,
  13.    1, 2, 3, 4, 5, 6, 7, 8,
  14.    1, 2, 3, 4, 5, 6, 7, 8
  15. };
  16.  
  17. int Square::Ranks[64] =
  18. {
  19.    1, 1, 1, 1, 1, 1, 1, 1,
  20.    2, 2, 2, 2, 2, 2, 2, 2,
  21.    3, 3, 3, 3, 3, 3, 3, 3,
  22.    4, 4, 4, 4, 4, 4, 4, 4,
  23.    5, 5, 5, 5, 5, 5, 5, 5,
  24.    6, 6, 6, 6, 6, 6, 6, 6,
  25.    7, 7, 7, 7, 7, 7, 7, 7,
  26.    8, 8, 8, 8, 8, 8, 8, 8
  27. };
  28.  
  29. int Square::Edge[64] =
  30. {
  31.    1, 1, 1, 1, 1, 1, 1, 1,
  32.    1, 0, 0, 0, 0, 0, 0, 1,
  33.    1, 0, 0, 0, 0, 0, 0, 1,
  34.    1, 0, 0, 0, 0, 0, 0, 1,
  35.    1, 0, 0, 0, 0, 0, 0, 1,
  36.    1, 0, 0, 0, 0, 0, 0, 1,
  37.    1, 0, 0, 0, 0, 0, 0, 1,
  38.    1, 1, 1, 1, 1, 1, 1, 1
  39. };
  40.  
  41. int Square::Colors[64] =
  42. {
  43.    1, 0, 1, 0, 1, 0, 1, 0,
  44.    0, 1, 0, 1, 0, 1, 0, 1,
  45.    1, 0, 1, 0, 1, 0, 1, 0,
  46.    0, 1, 0, 1, 0, 1, 0, 1,
  47.    1, 0, 1, 0, 1, 0, 1, 0,
  48.    0, 1, 0, 1, 0, 1, 0, 1,
  49.    1, 0, 1, 0, 1, 0, 1, 0,
  50.    0, 1, 0, 1, 0, 1, 0, 1
  51. };
  52.  
  53. Square::Square( const int file, const int rank, const ColorType side )
  54. {
  55.     if (side == Black)
  56.        my_location =  (rank-1)*8 + file - 1;
  57.     else
  58.        my_location = 55 - (rank-1)*8 + file;
  59. #ifdef RANGE_CHECK
  60.     assert(OnBoard());
  61. #endif
  62. }
  63.  
  64. int Square::Rank(const ColorType side) const
  65. {
  66. #ifdef RANGE_CHECK
  67.    assert(OnBoard());
  68. #endif
  69.    if (side == Black)
  70.       return Ranks[my_location];
  71.    else
  72.       return 9-Ranks[my_location];
  73. }
  74.  
  75. const Square &Square::Invalid()
  76. {
  77.     static Square sq(InvalidSquare);
  78.     return sq;
  79. }
  80.  
  81. Square Square::Value( char *p )
  82. {
  83.     int rank, file;
  84.  
  85.     if ((*p >= 'a') && (*p <= 'h'))
  86.        file = *p - 'a' + 1;
  87.     else
  88.        return Square::Invalid();
  89.     ++p;
  90.     if ((*p >= '1') && (*p <= '8'))
  91.        rank = *p - '1' + 1;
  92.     else
  93.        return Square::Invalid();
  94.     return (8-rank)*8 + file - 1;
  95. }
  96.  
  97. char Square::FileImage() const
  98. {
  99.     return 'a' + File() - 1;
  100. }
  101.  
  102. char Square::RankImage() const
  103. {
  104.     return '1' + Rank(White) - 1;
  105. }
  106.  
  107.  
  108.  
  109.